home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / lib / kh / kh_pal.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-23  |  3.0 KB  |  113 lines

  1. #include    <stdio.h>
  2. #include    <stdlib.h>
  3. #include    <string.h>
  4. #include    <winb.h>
  5. #include    <te.h>
  6. #include    <fntb.h>
  7. #include    <gui.h>
  8. #include    <egb.h>
  9. #include    <guidbg.h>
  10.  
  11. //#include    <snd.h>
  12. //#include    <msdos.cf>
  13. //#include    <loader.h>
  14. //#include    <math.h>
  15. //#include    <io.h>
  16.  
  17. #include    "KH.H"
  18.  
  19. //#define DEBUG
  20.  
  21. //    初期32768色パレット変換テーブル(青系メニュー色)
  22. unsigned int    paletteTable32k[16] = {
  23.     0x00000000, 0x3cb73cb7, 0x37293729, 0x67f567f5,
  24.     0x4e734e73, 0x640f640f, 0x67396739, 0x3def3def,
  25.     0x14a514a5, 0x5e3b5e3b, 0x03600360, 0x00150015,
  26.     0x2d6b2d6b, 0x7c1f7c1f, 0x6fe06fe0, 0x7fff7fff
  27. };
  28.  
  29. //    初期1677万色パレット変換テーブル(青系メニュー色)
  30. unsigned int    paletteTable16m[16] = {
  31.     0x00000000, 0x00b02070, 0x0040c060, 0x00a0f0c0,
  32.     0x00909090, 0x007000c0, 0x00c0c0c0, 0x00707070,
  33.     0x00202020, 0x00e080b0, 0x0000d000, 0x00a00000,
  34.     0x00505050, 0x00f000f0, 0x0000f0d0, 0x00ffffff
  35. };
  36.  
  37. int    KH_initGuiColor(void)
  38. {
  39.     //    EGB_getTmenuPalette関数用
  40.     typedef struct _TMENUCOLOR{
  41.         unsigned int    colorNo;    //    パレットナンバー
  42.         char            blue;        //    青(0~255)
  43.         char            red;        //    赤(0~255)
  44.         char            green;        //    緑(0~255)
  45.         char            dummy;
  46.     } TMENUCOLOR;
  47.  
  48.     typedef struct _TMENUPALETTE{
  49.         unsigned int    maxColor;    //    読み取った色数
  50.         TMENUCOLOR        color[16];
  51.     } TMENUPALETTE;
  52.  
  53.     TMENUPALETTE    palette;
  54.     unsigned int    *table;
  55.     unsigned int    i,j;
  56.  
  57.     //    メニュー色読み取り
  58.     EGB_getTmenuPalette( &palette ) ;
  59.  
  60.     //    256色パレットテーブルの設定
  61.     table = MG_getColorTable( 1 );
  62.     for( i = 0 ; i < 16 ; i++ )
  63.     {
  64.         table[i] = i +(i << 8) +(i<<16) +(i << 24 );
  65.     }
  66.  
  67.     //    32768色パレットテーブルの設定
  68.     for( i = 0 ; i < palette.maxColor ; i++ )
  69.     {
  70.         #ifdef DEBUG
  71.         printf("color16(%d)=RGB(%d,%d,%d)\n",
  72.         palette.color[i].red,palette.color[i].green,palette.color[i].blue);
  73.         #endif
  74.         j =   ((((palette.color[i].green+8)/8)-1)<<10)
  75.             + ((((palette.color[i].red  +8)/8)-1)<< 5)
  76.             +  (((palette.color[i].blue +8)/8)-1)      ;
  77.         #ifdef DEBUG
  78.         printf("color(%d)=RGB(%02X:%02X:%02X)->",palette.color[i].colorNo,
  79.             ((paletteTable32k[palette.color[i].colorNo] & 0x02E0)>> 5),
  80.             ((paletteTable32k[palette.color[i].colorNo] & 0x7C00)>>10),
  81.              (paletteTable32k[palette.color[i].colorNo] & 0x001F)      );
  82.         #endif
  83.         paletteTable32k[palette.color[i].colorNo] = j +(j<<16) ;
  84.         #ifdef DEBUG
  85.         printf("(%02X:%02X:%02X)\n",
  86.             ((paletteTable32k[palette.color[i].colorNo] & 0x02E0)>> 5),
  87.             ((paletteTable32k[palette.color[i].colorNo] & 0x7C00)>>10),
  88.              (paletteTable32k[palette.color[i].colorNo] & 0x001F)      );
  89.         #endif
  90.     }
  91.     table = MG_getColorTable( 2 );
  92.     for( i = 0 ; i < 16 ; i++ )
  93.     {
  94.         table[i] = paletteTable32k[i];
  95.     }
  96.  
  97.     //    1677万色パレットテーブルの設定(確認できず)
  98.     for( i = 0 ; i < palette.maxColor ; i++ )
  99.     {
  100.         paletteTable16m[palette.color[i].colorNo] =
  101.               (palette.color[i].blue <<16)
  102.             + (palette.color[i].green<< 8)
  103.             +  palette.color[i].red        ;
  104.     }
  105.     table = MG_getColorTable( 3 );
  106.     for( i = 0 ; i < 16 ; i++ )
  107.     {
  108.         table[i] = paletteTable16m[i];
  109.     }
  110.  
  111.     return NOERR;
  112. }
  113.